# -*- coding: utf-8 -*-
# @Time     : 2021/12/1 14:46
# @Author   : wljess
# @File     : 线程共享全局变量.py
# @Describe : 
# @Software : PyCharm

import time
from threading import Thread, enumerate

num = 1000


def task1(n):
    global num
    for _ in range(n):
        num -= 1
    print("----in task1, g_num is %d---" % num)


def task2(n):
    global num
    for _ in range(n):
        num += 1
    print("----in task2, g_num is %d---" % num)


if __name__ == '__main__':
    t = Thread(target=task1, args=(1000000, ))
    t1 = Thread(target=task2, args=(1000000, ))
    t.start()
    t1.start()
    # 确保子线程都运行结束
    while len(enumerate()) != 1:
        time.sleep(1)

    print("2个线程对同一个全局变量操作之后的最终结果是:%s" % num)


'''
运行结果：
    ----in task1, g_num is -280971---
    ----in task2, g_num is 2871---
    2个线程对同一个全局变量操作之后的最终结果是:2871
如果多个线程同时对同一个全局变量操作，会出现资源竞争问题，从而数据结果会不正确。
'''